package handler

import (
	"gpt-api/handler/common"
	"gpt-api/handler/expert"
	"gpt-api/handler/img"
	"gpt-api/handler/manage"
	"gpt-api/handler/member"
	"gpt-api/handler/notifications"
	"gpt-api/handler/test"
	topupways "gpt-api/handler/topup_ways"
	"gpt-api/handler/user"
	"gpt-api/pkg/design"
	"math/rand"
	"time"

	"gpt-api/framework/auther"
	"gpt-api/framework/cache"
	"gpt-api/handler/exchange"
	"gpt-api/handler/feedback"

	"github.com/gin-gonic/gin"
)

type Handler struct {
	auther        auther.Auther
	feedback      *feedback.Handler
	user          *user.Handler
	manage        *manage.Handler
	expert        *expert.Handler
	common        *common.Handler
	test          *test.Handler
	topupways     *topupways.Handler
	notifications *notifications.Handler
	member        *member.Handler
	img           *img.Handler
	exchange      *exchange.Handler
}

func NewHandler(redisCli *cache.RedisClient, auther auther.Auther) *Handler {
	rand.Seed(time.Now().UTC().UnixNano())

	singleton := design.GetSingleInstance()
	db := singleton.GetDB()
	// migrate
	// db.AutoMigrate(&model.Member{})
	// db.AutoMigrate(&model.Users{})
	// db.AutoMigrate(&model.TopupWays{})
	// db.AutoMigrate(&model.Notifications{})
	// db.AutoMigrate(&model.Member{})
	// db.AutoMigrate(&model.Relations{})
	// db.AutoMigrate(&model.Events{})
	// db.AutoMigrate(&model.EventImage{})
	// db.AutoMigrate(&model.Business{})
	// db.AutoMigrate(&model.MemberImage{})
	// db.AutoMigrate(&model.TopupWays{})
	// db.AutoMigrate(&model.WxPay{})
	// sdb.AutoMigrate(&model.Score{})
	// db.AutoMigrate(&model.UserImage{})
	// db.AutoMigrate(&model.UserVideo{})
	// db.AutoMigrate(&model.CashAccount{})
	// db.AutoMigrate(&model.Transfer{})
	// err := db.AutoMigrate(&model.Exchange{})
	// if err != nil {
	// 	panic(err)
	// }

	return &Handler{
		auther:        auther,
		feedback:      feedback.New(),
		user:          user.New(db),
		manage:        manage.New(db, redisCli, auther),
		expert:        expert.New(db, redisCli),
		common:        common.New(db, auther),
		test:          test.New(db, auther),
		topupways:     topupways.New(db),
		notifications: notifications.New(db),
		member:        member.New(db),
		img:           img.New(db),
		exchange:      exchange.New(db, auther),
	}
}

// @Tags exchange 兑换码接口
// @Summary 兑换码兑换积分
// @Description 兑换码兑换积分
// @Router /api/v1/exchange/ex [get]
// @Param Authorization header string true "Authorization"
// @Param Code query string true "兑换码"
func (h *Handler) ExchangeCode(c *gin.Context) error {
	return h.exchange.ExchangeCode(c)
}

// @Tags test 测试接口
// @Summary 测试接口
// @Description 测试接口
// @Router /api/v1/test/get [get]
func (h *Handler) GetTest(c *gin.Context) error {
	return h.test.GetTest(c)
}

// @Tags test 测试接口
// @Summary 测试接口
// @Description 测试接口
// @Router /api/v1/test/post [post]
// @Produce json
func (h *Handler) PostTest(c *gin.Context) error {
	return h.test.PostTest(c)
}

/* img */
// @Tags img 图片处理接口
// @Summary 图片处理，增强，美颜等
// @Description 图片处理的API接口
// @Router /api/v1/img/process [post]
// @Produce json
// @Param Authorization header string true "Authorization"
// @Param t formData int true "类型:1图片增强，2图片上色,3图片裁剪" default(1) Enums(1,2,3)
// @Param file formData file true "图片" format(jpg,png,jpeg)
func (h *Handler) ImgProcess(c *gin.Context) error {
	return h.img.ImgProcess(c)
}

type ImgToVideoRequest struct {
	// T | 类型
	T int `json:"t" validate:"required" example:"1"`
	// Path | 图片path
	Path string `json:"path" validate:"required" example:"/yq/picture/2024/09/65921e6295e693d86fb2214e0d6333e7.png"`
}

// @Tags img 图片处理接口
// @Summary 图片按照视频动作转视频
// @Description 图片转视频的API接口
// @Router /api/v1/img/video [post]
// @Produce json
// @Param Authorization header string true "Authorization"
// @Param body body ImgToVideoRequest true "请求体"
func (h *Handler) ImgToVideo(c *gin.Context) error {
	return h.img.ImgToVideo(c)
}

// @Tags img 图片处理接口
// @Summary 保存图片或者视频资源
// @Description 保存图片或者视频资源的API接口
// @Router /api/v1/img/save [get]
// @Produce json
// @Param Authorization header string true "Authorization"
// @Param HandleId query string true "操作id"
func (h *Handler) SaveImg(c *gin.Context) error {
	return h.img.SourceSave(c)
}

// @Tags img 图片处理接口
// @Summary 删除图片或者视频资源
// @Description 删除图片或者视频资源的API接口
// @Router /api/v1/img/delete [delete]
// @Produce json
// @Param Authorization header string true "Authorization"
// @Param HandleId formData string true "操作id"
func (h *Handler) DeleteImg(c *gin.Context) error {
	return h.img.SourceDel(c)
}

// 获取用户信息
// @Tags users 用户接口
// @Summary 获取用户信息
// @Description 获取用户信息的API接口
// @Router /api/v1/users/info [get]
// @Produce json
// @Param Authorization header string true "Authorization"
func (h *Handler) GetUser(c *gin.Context) error {
	return h.user.GetUser(c)
}

// 获取用户邀请码
// @Tags users 用户接口
// @Summary 获取用户邀请码
// @Description 获取获取用户邀请码API接口
// @Router /api/v1/users/invite/code [get]
// @Produce json
// @Param Authorization header string true "Authorization"
func (h *Handler) GetUserInviteCode(c *gin.Context) error {
	return h.user.GetInviteCode(c)
}

// 获取用户邀请记录
// @Tags users 用户接口
// @Summary 获取用户邀请记录
// @Description 获取获取用户邀请记录API接口
// @Router /api/v1/users/invite/record [get]
// @Produce json
// @Param Authorization header string true "Authorization"
// @Param page formData int false "页码"
// @Param size formData int false "每页条数"
// @Param type formData int false "明细类型,1=现金明细,2=积分明细"
func (h *Handler) GetUserInviteRecord(c *gin.Context) error {
	return h.user.GetInviteRecord(c)
}

// 上传图片
// @Tags users 用户接口
// @Summary 上传图片
// @Description 上传图片的API接口
// @Router /api/v1/users/image/upload [post]
// @Produce json
// @Param Authorization header string true "Authorization"
// @Param file formData file true "图片" format(jpg,png,jpeg)
func (h *Handler) UploadImage(c *gin.Context) error {
	return h.user.UploadImage(c)
}

// 修改用户信息
// @Tags users 用户接口
// @Summary 修改用户信息
// @Description 修改用户信息的API接口
// @Router /api/v1/users/info [put]
// @Produce json
// @Param Authorization header string true "Authorization"
// @Param Username formData string false "用户名"
// @Param Gender formData int false "性别:0未知,1男,2女"
// @Param Avatar formData string false "头像"
// @Param Phone formData string false "手机号"
func (h *Handler) UpdateUser(c *gin.Context) error {
	return h.user.UpdateUser(c)
}

// 头像上传

/* topup ways */
// 获取充值列表
// @Tags topup 充值接口
// @Summary 获取充值列表
// @Description 获取充值列表的API接口
// @Router /api/v1/topupways/list [get]
// @Produce json
func (h *Handler) ListTopupWays(c *gin.Context) error {
	return h.topupways.ListTopupWays(c)
}

/* events */
// 获取事件列表
// @Tags events 事件接口
// @Summary 获取事件列表
// @Description 获取事件列表的API接口
// @Router /api/v1/events/list [get]
// @Param Authorization header string true "Authorization"
// @Param member_id formData int true "成员ID"
// @Param page formData int false "页码"
// @Param size formData int false "每页条数"
func (h *Handler) ListEvents(c *gin.Context) error {
	return h.member.GetEventsList(c)
}

type AddAndUpdateEventRqest struct {
	// ID | 事件ID,创建不传,更新必填
	ID uint64 `json:"id"`
	// MemberId | 成员ID
	MemberId uint64 `json:"member_id" validate:"required" example:"1"`
	// EventTypeID | 事件类型id
	EventTypeID uint64 `json:"event_type_id" validate:"required" example:"1"`
	// Title | 事件标题
	Title string `json:"title" example:"出生"`
	// Content | 事件内容
	Content string `json:"content" exxample:"我在今天生日"`
	// StartTime | 开始时间，格式：2006-01-02
	StartTime string `json:"start_time" validate:"required" example:"2023-01-01"`
	// EndTime | 结束时间，格式：2006-01-02
	EndTime string `json:"end_time" example:"2023-01-01"`
	// Location | 地点
	Location string `json:"location" example:"北京市朝阳区景天街"`
	// EventImages | 图片列表,最多九张
	EventImages []string `json:"event_images" example:"https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png,https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png,https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png"`
}

// 添加事件
// @Tags events 事件接口
// @Summary 添加事件
// @Description 添加事件的API接口
// @Router /api/v1/events/add [post]
// @Param Authorization header string true "Authorization"
// @Param body body AddAndUpdateEventRqest true "请求体"
func (h *Handler) AddEvent(c *gin.Context) error {
	return h.member.AddEvent(c)
}

// 修改事件
// @Tags events 事件接口
// @Summary 修改事件
// @Description 修改事件的API接口
// @Router /api/v1/events/info [put]
// @Param Authorization header string true "Authorization"
// @Param body body AddAndUpdateEventRqest true "请求体"
func (h *Handler) UpdateEvent(c *gin.Context) error {
	return h.member.AddEvent(c)
}

// 删除事件
// @Tags events 事件接口
// @Summary 删除事件
// @Description 删除事件的API接口
// @Router /api/v1/events/delete [delete]
// @Param Authorization header string true "Authorization"
// @Param id formData int true "ID"
func (h *Handler) DeleteEvent(c *gin.Context) error {
	return h.member.DeleteEvent(c)
}

// 获取事件详情
// @Tags events 事件接口
// @Summary 获取事件详情
// @Description 获取事件详情的API接口
// @Router /api/v1/events/info [get]
// @Param Authorization header string true "Authorization"
// @Param id formData int true "ID"
func (h *Handler) GetEvent(c *gin.Context) error {
	return h.member.GetEvent(c)
}

/* event types */
// 获取事件类型列表
// @Tags eventtypes 事件类型接口
// @Summary 获取事件类型列表
// @Description 获取事件类型列表的API接口
// @Router /api/v1/eventtype/list [get]
// @Param Authorization header string true "Authorization"
func (h *Handler) ListEventTypes(c *gin.Context) error {
	return h.member.ListEventTypes(c)
}

type AddAndUpdateEventTypeRequest struct {
	// Id | 事件类型ID,创建不传,更新必填
	ID uint64 `json:"id" example:"0"`
	// Title | 事件类型名称
	Title string `json:"title" validate:"required" example:"出生"`
}

// 添加事件类型
// @Tags eventtypes 事件类型接口
// @Summary 添加事件类型
// @Description 添加事件类型的API接口
// @Router /api/v1/eventtype/add [post]
// @Param Authorization header string true "Authorization"
// @Param body body AddAndUpdateEventTypeRequest true "请求体"
func (h *Handler) AddEventType(c *gin.Context) error {
	return h.member.AddEventType(c)
}

// 修改事件类型
// @Tags eventtypes 事件类型接口
// @Summary 修改事件类型
// @Description 修改事件类型的API接口
// @Router /api/v1/eventtype/info [put]
// @Param Authorization header string true "Authorization"
// @Param body body AddAndUpdateEventTypeRequest true "请求体"
func (h *Handler) UpdateEventType(c *gin.Context) error {
	return h.member.AddEventType(c)
}

// 删除事件类型
// @Tags eventtypes 事件类型接口
// @Summary 删除事件类型
// @Description 删除事件类型的API接口
// @Router /api/v1/eventtype/delete [delete]
// @Param id formData int true "ID"
func (h *Handler) DeleteEventType(c *gin.Context) error {
	return h.member.DeleteEventType(c)
}

// 获取事件类型详情
// @Tags eventtypes 事件类型接口
// @Summary 获取事件类型详情
// @Description 获取事件类型详情的API接口
// @Router /api/v1/eventtype/info [get]
// @Param id formData int true "ID"
func (h *Handler) GetEventType(c *gin.Context) error {
	return h.member.GetEventType(c)
}

/* event images */

/* members */
// 获取用户全部成员列表
// @Tags members 成员接口
// @Summary 获取用户全部成员列表
// @Description 获取成员列表的API接口
// @Router /api/v1/members/list [get]
// @Param Authorization header string true "Authorization"
func (h *Handler) ListMembers(c *gin.Context) error {
	return h.member.ListMembers(c)
}

/* members */
// 获取用户全部成员列表-平铺
// @Tags members 成员接口
// @Summary 获取用户全部成员列表-平铺
// @Description 获取成员列表的API接口
// @Router /api/v1/members/list/all [get]
// @Param Authorization header string true "Authorization"
func (h *Handler) ListMembersAll(c *gin.Context) error {
	return h.member.ListMembersAll(c)
}

// 获取成员直属成员列表
// @Tags members 成员接口
// @Summary 获取成员直属成员列表
// @Description 根据成员ID获取直属成员列表的API接口
// @Router /api/v1/members/list/child [get]
// @Param Authorization header string true "Authorization"
// @Param id formData int true "成员ID"
func (h *Handler) ListMembersChild(c *gin.Context) error {
	return h.member.ListMemberChild(c)
}

type AddAndUpdateMemberRequest struct {
	// ID | 成员ID,创建不传,更新必填
	ID uint64 `json:"id" example:"0"`
	// Username | 用户名
	Username string `json:"username" validate:"required" example:"张三"`
	// Avatar | 头像
	Avatar string `json:"avatar" validate:"required" example:"https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png"`
	// Gender | 性别0未知，1男，2女
	Gender int `json:"gender" example:"1"`
	// RelationID | 关系ID
	RelationID uint64 `json:"relation_id" validate:"required" example:"1"`
	// Birthday | 生日时间，格式：2006-01-02
	Birthday string `json:"birthday" example:"2006-01-02"`
	// Birthplace | 出生地
	Birthplace string `json:"birthplace" example:"北京"`
	// Diedday | 去世时间，格式：2006-01-02
	Diedday string `json:"diedday" example:"2006-01-02"`
	// Deathplace | 去世地址
	Deathplace string `json:"deathplace" example:"北京"`
	// MemberID | 所属成员ID
	MemberID uint64 `json:"member_id" example:"1"`
	// Describe | 描述
	Describe string `json:"describe" example:"他的小名叫张三"`
	// IsLiving | 是否在世，0否，1是
	IsLiving int `json:"is_living" example:"1"`
}

// 添加成员
// @Tags members 成员接口
// @Summary 添加成员
// @Description 添加成员的API接口
// @Router /api/v1/members/add [post]
// @Produce json
// @Param Authorization header string true "Authorization"
// @Param body body AddAndUpdateMemberRequest true "请求体"
func (h *Handler) AddMember(c *gin.Context) error {
	return h.member.AddMember(c)
}

// 修改成员
// @Tags members 成员接口
// @Summary 修改成员
// @Description 修改成员的API接口
// @Router /api/v1/members/update [put]
// @Produce json
// @Param Authorization header string true "Authorization"
// @Param body body AddAndUpdateMemberRequest true "请求体"
func (h *Handler) UpdateMember(c *gin.Context) error {
	return h.member.AddMember(c)
}

// 删除成员
// @Tags members 成员接口
// @Summary 删除成员
// @Description 删除成员的API接口
// @Router /api/v1/members/delete [delete]
// @Param Authorization header string true "Authorization"
// @Param id formData int true "成员ID"
func (h *Handler) DeleteMember(c *gin.Context) error {
	return h.member.DeleteMember(c)
}

// 获取成员详情
// @Tags members 成员接口
// @Summary 获取成员详情
// @Description 获取成员详情的API接口
// @Router /api/v1/members/info [get]
// @Param Authorization header string true "Authorization"
// @Param id query int true "成员ID"
func (h *Handler) GetMember(c *gin.Context) error {
	return h.member.GetMember(c)
}

type AddMemberImageRequest struct {
	// MemberId | 成员ID
	MemberId uint64 `json:"member_id" validate:"required" example:"1"`
	// ImageUrl | 图片列表,最多九张
	ImageUrl []string `json:"image_url" example:"https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png,https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png,https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png"`
	// Type | 图片类型，1=图片，2=视频
	Type int `json:"type" validate:"required" example:"1"`
}

// 添加成员图库
// @Tags members 成员接口
// @Summary 添加成员图库
// @Description 添加成员图库的API接口
// @Router /api/v1/members/images [post]
// @Param Authorization header string true "Authorization"
// @Param body body AddMemberImageRequest true "请求体"
func (h *Handler) AddMemberImage(c *gin.Context) error {
	return h.member.AddMemberImage(c)
}

// 获取成员图库
// @Tags members 成员接口
// @Summary 获取成员图库列表
// @Description 获取成员图库列表的API接口
// @Router /api/v1/members/images [get]
// @Param Authorization header string true "Authorization"
// @Param id formData int false "成员ID"
// @Param type formData int false "图片类型，1=图片，2=视频"
// @Param page formData int false "页码"
// @Param size formData int false "每页条数"
func (h *Handler) GetMemberImages(c *gin.Context) error {
	return h.member.GetMemberImages(c)
}

type DeleteMemberImageRequest struct {
	// ID | 图片ID
	ID []uint64 `json:"id" validate:"required" example:"1,2,3"`
}

// 删除成员图库
// @Tags members 成员接口
// @Summary 删除成员图库
// @Description 删除成员图库的API接口
// @Router /api/v1/members/images [delete]
// @Param Authorization header string true "Authorization"
// @Param body body DeleteMemberImageRequest true "请求体"
func (h *Handler) DeleteMemberImage(c *gin.Context) error {
	return h.member.DeleteMemberImage(c)
}

/* relations */
// 获取某个成员的关系列表
// @Tags relations 关系接口
// @Summary 获取某个成员的关系列表
// @Description 获取某个成员的关系列表的API接口
// @Router /api/v1/relations/list [get]
// @Param Authorization header string true "Authorization"
// @Param member_id formData int false "成员ID"
func (h *Handler) ListRelations(c *gin.Context) error {
	return h.member.Relations(c)
}

// 根据父级成员ID获取子级成员列表
// @Tags relations 关系接口
// @Summary 根据父级成员ID获取子级成员列表
// @Description 根据父级成员ID获取子级成员列表的API接口
// @Router /api/v1/relations/children [get]
// @Param Authorization header string true "Authorization"
// @Param parent formData int false "父级id"
func (h *Handler) ListRelationChildren(c *gin.Context) error {
	return h.member.Children(c)
}

/* notifications */
// 获取通知列表
// @Tags notifications 通知接口
// @Summary 获取通知列表
// @Description 获取通知列表的API接口
// @Router /api/v1/notifications/list [get]
// @Param Authorization header string true "Authorization"
func (h *Handler) ListNotifications(c *gin.Context) error {
	return h.notifications.NotificationsList(c)
}

// 获取通知详情
// @Tags notifications 通知接口
// @Summary 获取通知详情
// @Description 获取通知详情的API接口
// @Router /api/v1/notifications/info [get]
// @Produce json
// @Param Authorization header string true "Authorization"
// @Param Id formData int false "通知id"
func (h *Handler) GetNotification(c *gin.Context) error {
	return h.notifications.NotificationsInfo(c)
}

// 删除通知
// @Tags notifications 通知接口
// @Summary 删除通知
// @Description 删除通知的API接口
// @Router /api/v1/notifications/delete [delete]
// @Produce json
// @Param Authorization header string true "Authorization"
// @Param Id formData int false "通知id"
func (h *Handler) DeleteNotification(c *gin.Context) error {
	return h.notifications.DeleteNotification(c)
}

// 标记通知为已读
// @Tags notifications 通知接口
// @Summary 标记通知为已读
// @Description 标记通知为已读的API接口
// @Router /api/v1/notifications/markread [put]
// @Produce json
// @Param Authorization header string true "Authorization"
// @Param Id formData int false "通知id"
func (h *Handler) MarkNotificationRead(c *gin.Context) error {
	return h.notifications.MarkNotificationsReadId(c)
}

// 标记全部通知为已读
// @Tags notifications 通知接口
// @Summary 标记全部通知为已读
// @Description 标记全部通知为已读的API接口
// @Router /api/v1/notifications/markallread [put]
// @Produce json
// @Param Authorization header string true "Authorization"
func (h *Handler) MarkAllNotificationsRead(c *gin.Context) error {
	return h.notifications.MarkAllNotificationsRead(c)
}

/* common apis */

// wxlogin
// @Tags common 公共接口
// @Summary 微信登录
// @Description 微信登录的API接口，如果没有账号，则会默认注册。
// @Router /api/v1/common/wxlogin [get]
// @Produce json
// @Param Code query string true "微信登录的code"
// @Param Username query string false "用户填写的用户名"
// @Param InviteCode query string false "邀请码"
func (h *Handler) WeiXinLogin(c *gin.Context) error {
	return h.common.WeiXinLogin(c)
}

// @Tags common 公共接口
// @Summary 省份列表
// @Description 省份列表
// @Router /api/v1/common/province [get]
// @Produce json
func (h *Handler) Province(c *gin.Context) error {
	return h.common.GetProvinceList(c)
}

// @Tags common 公共接口
// @Summary 城市列表
// @Description 城市列表
// @Router /api/v1/common/city [get]
// @Param Code query string true "省份code"
// @Produce json
func (h *Handler) City(c *gin.Context) error {
	return h.common.GetCityList(c)
}

// @Tags common 公共接口
// @Summary 地区列表
// @Description 地区列表
// @Router /api/v1/common/area [get]
// @Param Code query string true "城市code"
// @Produce json
func (h *Handler) Area(c *gin.Context) error {
	return h.common.GetAreaList(c)
}

// @Tags common 公共接口
// @Summary 获取微信支付预付单
// @Description 获取微信支付预付单API接口
// @Router /api/v1/common/wxpay [post]
// @Produce json
// @Param topup_ways_id formData int false "充值方式ID"
// @Param amount formData int false "金额,单位:分"
func (h *Handler) WechatPay(c *gin.Context) error {
	return h.common.WechatPay(c)
}

// @Tags common 公共接口
// @Summary 获取微信支付记录结果(同步)
// @Description 获取微信支付记录结果API接口
// @Router /api/v1/common/wxpay [get]
// @Produce json
// @Param out_trade_no query string true "商户支付单号"
func (h *Handler) WechatPaySync(c *gin.Context) error {
	return h.common.WechatPaySync(c)
}

// @Tags common 公共接口
// @Summary 微信支付通知(异步)
// @Description 微信支付通知(异步)接口
// @Router /api/v1/common/wxpayasync [post]
// @Produce json
func (h *Handler) WechatPayAsyn(c *gin.Context) {
	result := h.common.WechatPayAsyn(c)
	c.JSON(200, result)
}

/* cash account */
// 获取提现账户列表
// @Tags cashaccount 提现账户
// @Summary 获取提现账户列表
// @Description 获取提现账户列表的API接口
// @Router /api/v1/cashaccount/list [get]
// @Produce json
func (h *Handler) ListCashAccount(c *gin.Context) error {
	return h.topupways.ListCashAccount(c)
}

// @Tags cashaccount 提现账户
// @Summary 创建提现账户
// @Description 创建提现账户API接口
// @Router /api/v1/cashaccount/add [post]
// @Produce json
// @Param id formData int false "提现账户ID，创建不传,更新必填"
// @Param type formData int true "账户类型，1微信，2支付宝，3银行卡"
// @Param account formData string true "收款帐号"
// @Param idcard formData string true "身份证号"
// @Param name formData string true "收款人姓名"
// @Param phone formData string true "收款手机号"
func (h *Handler) AddCashAccount(c *gin.Context) error {
	return h.topupways.AddCashAccount(c)
}

// 获取提现列表
// @Tags cashaccount 提现账户
// @Summary 获取提现列表
// @Description 获取提现列表的API接口
// @Router /api/v1/transfer/list [get]
// @Param page formData int false "页码"
// @Param size formData int false "每页条数"
// @Produce json
func (h *Handler) ListTransfer(c *gin.Context) error {
	return h.topupways.ListTransfer(c)
}

// 申请提现
// @Tags cashaccount 提现账户
// @Summary 申请提现
// @Description 申请提现得API接口
// @Router /api/v1/transfer/add [post]
// @Produce json
// @Param id formData int true "提现账户ID"
// @Param amount formData int true "提现金额(单位：分)"
func (h *Handler) ApplyTransfer(c *gin.Context) error {
	return h.topupways.ApplyTransfer(c)
}

func (h *Handler) ChatGptResult(c *gin.Context) error {
	return h.user.Tinfoil(c)
}

func (h *Handler) ProductResult(c *gin.Context) error {
	return h.user.Tinfoil(c)
}

func (h *Handler) ApplyResult(c *gin.Context) error {
	return h.user.Apply(c)
}

func (h *Handler) CoinsResult(c *gin.Context) error {
	return h.user.Coins(c)
}

// PingExample godoc
// @Summary ping example
// @Schemes
// @Description do ping
// @Tags example
// @Accept json
// @Produce json
// @Success 200 {string} Helloworld
// @Router /user/isvip [post]
func (h *Handler) VipResult(c *gin.Context) error {
	return h.user.IsVip(c)
}

func (h *Handler) AddUserResult(c *gin.Context) error {
	return h.user.AddUser(c)
}

func (h *Handler) PayStatusNotify(c *gin.Context) error {
	return h.expert.PayStatusNotify(c)

}

func (h *Handler) CoinCharger(c *gin.Context) error {
	return h.expert.PayStatusNotification(c)

}

func (h *Handler) AddLogs(c *gin.Context) error {
	return h.user.AddLogs(c)

}

func (h *Handler) GetResult(c *gin.Context) error {
	return h.user.GetResult(c)
}

func (h *Handler) GetResultList(c *gin.Context) error {
	return h.user.GetResultList(c)
}
func (h *Handler) GetResultDoll(c *gin.Context) error {
	return h.user.GetResultDoll(c)
}

func (h *Handler) GetResultOpen(c *gin.Context) error {
	return h.user.GetResultSoon(c)
}

func (h *Handler) GetStrategy(c *gin.Context) error {
	return h.user.GetStrategy(c)
}

func (h *Handler) GetImage(c *gin.Context) error {
	return h.user.GetImage(c)
}

func (h *Handler) ImitateCalculatingAward(c *gin.Context) error {
	return h.user.ImitateCalculatingAward(c)
}

func (h *Handler) ImitateList(c *gin.Context) error {
	return h.user.ImitateList(c)
}

func (h *Handler) GetStrategyH(c *gin.Context) error {
	return h.user.GetStrategyH(c)
}

func (h *Handler) GetAdminPeriods(c *gin.Context) error {
	return h.user.GetExpect(c)
}

func (h *Handler) StartLottery(c *gin.Context) error {
	return h.user.CalculatingAward(c)
}

func (h *Handler) CalculateProbability(c *gin.Context) error {
	return h.user.CalculateProbability(c)
}

func (h *Handler) AddEventResult(c *gin.Context) error {
	return h.user.AddEvent(c)
}

func (h *Handler) UpdateEventResult(c *gin.Context) error {
	return h.user.UpdateEvent(c)
}

func (h *Handler) GetEventsResult(c *gin.Context) error {
	return h.user.GetEvents(c)
}

// 添加成员
func (h *Handler) AddMembersResult(c *gin.Context) error {
	return h.user.AddMember(c)
}
